Przykładowe kolokwium - niestacjonarne
Przykładowe kolokwium - niestacjonarne
Zasady kolokwium
Przebieg
- Kolokwium odbywa się w formie on-line. Czas przeznaczony na rozwiązanie kolokwium to 1 godzina 30 minut. O wyznaczonej godzinie w systemie eKursy zostanie udostępniona treść kolokwium.
- Od momentu udostępnienia treści, przez 1,5 h aktywne będzie zadanie w systemie eKursy w którym należy umieścić rozwiązanie w formie plików tekstowych z rozszerzeniem
.cpp
/.h
/.hpp
. - Nie ma preferencji co do organizacji kodu względem podziału na pliki - zadanie może być przesłane w jednym pliku
.cpp
lub podzielone na wiele plików w zależności od indywidualnych preferencji/wygody. - Tylko rozwiązania umieszczone w wyznaczonym zadaniu na eKursy będą akceptowane, nie dopuszcza się innych form dostarczenia rozwiązania (wraz z przykładowym kolokwium udostępnione zostało zadanie na eKursy które działa tak samo jak to na właściwym kolokwium - proszę przećwiczyć wgrywanie odpowiedzi).
- Istniej możliwości wielokrotnego wgrywania rozwiązania w ramach limitu czasu. Aby uniknąć sytuacji, gdzie ze względu na np. problemy z połączeniem internetowym w ostatnich minutach nie będziecie Państwo w stanie przesłać kodu, sugeruję okresowe przesyłanie na Moodle cząstkowych rozwiązań, a później ich nadpisywanie.
- Proszę samodzielnie pilnować dostępnego czasu i nie zostawiać przesyłania na ostatnią chwilę - rozwiązania nie przesłane w terminie nie będą przyjmowane.
Ocenianie
- Błędy kompilacji dyskwalifikują z dalszej oceny i skutkują wynikiem 0 pkt.
- Pełna ocena za zadanie zakłada nieużywanie zmiennych globalnych oraz niekopiowanie argumentów tam, gdzie nie jest to konieczne (proszę korzystać z referencji).
- Jeśli w treści są podane nazwy funkcji, klas itd. należy ściśle się ich trzymać.
- Unikaj tworzenia publicznych pól klas, staraj się odpowiednio przygotować interfejs klasy.
- Rozwiązania zostaną poddane kontroli antyplagiatowej - proszę korzystać tylko z kodu swojego autorstwa, jeżeli przygotowują Państwo gotowe fragmenty programów proszę przygotować je samodzielnie, bez pomocy innych.
Kontakt z prowadzącym
W trakcie kolokwium prowadzący dostępny będzie na platformie Zoom, pod tym samym linkiem, pod którym odbywają się standardowe zajęcia. W przypadku wystąpienia problemów technicznych z portalem eKursy lub ewentualnych błędów w treści zadań macie Państwo możliwość natychmiastowego zgłoszenia takiej sytuacji. Logując się proszę użyć pełnego imienia i nazwiska. Prowadzący nie będzie udzielał pomocy w rozwiązaniu kolokwium.
Treść zadania
Do zadania dołączono zestaw tekstur do wykorzystania. Rozpakuj je i umieść folder tekstury w folderze uruchamiania programu (w przypadku Qt Creator będzie to build folder projektu), korzystaj tylko z ścieżek względnych.
Stwórz trzy klasy: Bohater
, Potwor
oraz Bagno
, dziedziczące po wspólnej klasie AnimowaneAssety
, reprezentującej oteksturowany obiekt. Zastanów się czy klasa bazowa AnimowaneAssety
nie powinna być klasą pochodną klasy, która już implementuje oczekiwane funkcjonalności. Korzystając z SFML zaimplementuj następującą funkcjonalność:
- Dodaj tekstury do stworzonych klas, skorzystaj z dostarczonych tekstur.
- Umieść w lewym dolnym narożniku ekranu obiekt klasy
Bohater
. - Umieść na scenie 5 potworów oraz 10 bagien w losowych miejscach (poza lewym dolnym narożnikiem ekranu, wylosuj takie wartości, aby obiekty nie wystawały poza krawędź ekranu), przechowuj wskaźniki do nich w jednej wybranej kolekcji.
- Dodaj do klasy
AnimowaneAssety
pola opisujące prędkością pionową i poziomą:- ustaw obie prędkości bohatera na wybrane przez siebie wartości,
- przy tworzeniu obiektu
Potwor
nadaj mu losową prędkość pionową z zakresu <-200, 200>, - przy tworzeniu obiektu
Bagno
nadaj mu losową prędkość poziomą z zakresu <-50, 50>,
- Dodaj do klasy
AnimowaneAssety
metodęCiaglaAnimacja
, implementującą animację obiektu z zapisaną w obiekcie prędkością:- wywołuj metodę
CiaglaAnimacja
dla obiektów klasPotwor
iBagno
.
- wywołuj metodę
- Rozszerz metodę
CiaglaAnimacja
o wykrywanie kolizji z krawędziami ekranu, w przypadku dotknięcia krawędzi, obiekt przenosi się na w pobliże przeciwnego krańca ekranu. - Dodaj do klasy
Bohater
metodęUstawCel
ustawiającą punkt docelowy, do którego ma dotrzeć bohater, zapisz punkt docelowy wewnątrz obiektuBohater
. - Dodaj obsługę myszki, kliknięcie punktu ustawia docelowy punkt do którego dąży bohater.
- Dodaj do klasy
Bohater
metodęPodazajDoCelu
, implementującą animację przemieszczania się bohatera do zadanego punktu z zapisaną w obiekcie prędkością. Bohater porusza się tak długo, aż nie osiągnie celu (bohater nie musi poruszać się po najkrótszej drodze). - Dodaj obsługę klawiatury - wciśnięcie b przesuwa bohatera z powrotem do obszaru startowego (lewy dolny narożnik).
- Dodaj w klasie
Bohater
obsługę żyć (początkowa wartość 3). - Dodaj wykrywanie kolizji bohatera z pozostałymi obiektami na scenie:
- usuwaj obiekt, z którym wystąpiła kolizja,
- odejmij bohaterowi jedno życie.
- Przerwij grę, jeśli bohater straci wszystkie życia.
Autorzy: Tomasz Mańkowski, Michał Fularz, Jakub Tomczyński